/**
 * 初始化radio model绑定对应常量
 */
const INIT_SCORE = 0;

export const getDataCols = () => [
  { label: "请根据近一年的体验和感觉，回答以下问题", prop: "question" },
  { label: "没有<br/>（根本不 / 从来没有）", prop: "score" },
  { label: ` 很少<br/>（有一点 / 偶尔）`, prop: "score" },
  { label: `有时<br/>（有些 / 少数时间）`, prop: "score" },
  { label: `经常<br/>（相当 / 多数时间）`, prop: "score" },
  { label: `总是<br/>（非常 / 每天）`, prop: "score" },
];
export const getQuestionTableData = () =>
  [
    {
      question: "您精力充沛吗？（指精神头足，乐于做事）",
      questionId: "fresh",
    },
    {
      question:
        "您容易疲乏吗？（指体力如何，是否稍微活动一下或做一点家务劳动就感到累）",
      questionId: "easyTired",
    },
    {
      question: "您容易气短，呼吸短促，接不上气吗？",
      questionId: "shortBreath",
    },
    {
      question: "您说话声音低弱无力吗？（指说话没有力气）",
      questionId: "speakVoiceWeak",
    },
    {
      question: "您感到闷闷不乐、情绪低沉吗？（指心情不愉快，情绪起落）",
      questionId: "lowSpirits",
    },
    {
      question: "您容易精神紧张、焦虑不安吗？（指遇事是否心情紧张）",
      questionId: "mentalTension",
    },
    {
      question: "您因为生活状态改变而感到孤独、失落吗？",
      questionId: "changeLonely",
    },
    {
      question: "您容易感到害怕或收到惊吓吗？",
      questionId: "easyFeelScared",
    },
    {
      question:
        "您感到身体超重不轻松吗？（感觉身体沉重）［BMI 指数 = 体重（kg）/ 身高 ²（m）]",
      extraTip: [
        "( BMI < 24 )",
        "( 24 ≤ BMI < 25 )",
        "( 25 ≤ BMI < 26 )",
        "( 26 ≤ BMI < 28 )",
        "( BMI ≥ 28 )",
      ],
      questionId: "feelingBodyHeavy",
    },
    {
      question: "您眼睛干涩吗？",
      questionId: "dryEye",
    },
    {
      question: "您手脚发凉吗？（不包含因周围温度低或穿的少导致的手脚发冷）",
      questionId: "handsFeetColdness",
    },
    {
      question:
        "您胃脘部、背部或腰膝部怕冷吗？（指上腹部、背部、腰部或膝关节等，有一处或多处怕冷）",
      questionId: "bodyAfraidCold",
    },
    {
      question:
        "您比一般人耐受不了寒冷吗？（指比别人容易害怕冬天或是夏天的冷空调、电扇等）",
      questionId: "moreAfraidCold",
    },
    {
      question: "您容易患感冒吗？（指每年感冒的次数）",
      extraTip: [
        "一年 < 2次",
        "一年感冒2—4次",
        "一年感冒5—6次",
        "一年感冒8次以上",
        "几乎每月",
      ],
      questionId: "easyCatchCold",
    },
    {
      question: "您没有感冒时也会鼻塞、流鼻涕吗？",
      questionId: "nasalObstruction",
    },
    {
      question: "您有口粘口腻，或睡眠打鼾吗？",
      questionId: "stickyGreasyMouth",
    },
    {
      question:
        "您容易过敏（对药物、食物、气味、花粉或在季节交替、气候变化时）吗？",
      extraTip: [
        "从来没有",
        "一年1、2次",
        "一年3、4次",
        "一年5、6次",
        "每次遇到上述原因都过敏",
      ],
      questionId: "proneAllergies",
    },
    {
      question: "您的皮肤容易起荨麻疹吗？（包括风团、风疹块、风疙瘩）",
      questionId: "easyDevelopUrticaria",
    },
    {
      question:
        "您的皮肤在不知不觉中会出现青紫瘀斑、皮下出血吗？（指皮肤在没有外伤的情况下出现青一块紫一块的情况）",
      questionId: "skinBruisesBruisesUnconsciously",
    },
    {
      question:
        "您的皮肤一抓就红，并出现抓痕吗？（指被指甲或钝物划过后皮肤的反应）",
      questionId: "skinTurnsRedScratch",
    },
    {
      question: "您皮肤或口唇干吗？",
      questionId: "drySkinLips",
    },
    {
      question: "您有肢体麻木或固定部位疼痛的感觉吗？",
      questionId: "limbNumbness",
    },
    {
      question: "您面部或鼻部有油腻感或者油亮发光吗？（指脸上或鼻子）",
      questionId: "facialGreasiness",
    },
    {
      question: "您面色或目眶晦暗，或出现褐色斑块 / 斑点吗？",
      questionId: "gloomyComplexion",
    },
    {
      question: "您有皮肤湿疹、疮疖吗？",
      questionId: "skinEczema",
    },
    {
      question: "您感到口干咽燥、总想喝水吗？",
      questionId: "dryMouthThroat",
    },
    {
      question: "您感到口苦或嘴里有异味吗？（指口苦或口臭）",
      questionId: "bitterBadBreath",
    },
    {
      question: "您腹部肥大吗？（指腹部脂肪肥厚）",
      extraTip: [
        "（腹围<80cm，相当于2.4尺）",
        "（80cm≤腹围<85cm，2.4尺≤腹围<2.55尺）",
        "（85cm≤腹围<90cm，2.55尺≤腹围<2.70尺）",
        "（90cm≤腹围<105cm，2.70尺≤腹围<3.15尺）",
        "（腹围≥105cm，腹围≥3.15尺）",
      ],
      questionId: "abdominalHypertrophy",
    },
    {
      question:
        "您吃（喝）凉的东西会感到不舒服或怕吃（喝）凉的东西吗？（指不喜欢吃凉的食物，或吃了凉的食物后会不舒服）",
      questionId: "scaredColdFood",
    },
    {
      question:
        "您有大便粘滞不爽、解不尽的感觉吗？（大便容易粘在马桶或便坑壁上）",
      questionId: "stickyUncomfortableStool",
    },
    {
      question: "您容易大便干燥吗？",
      questionId: "easyDryStool",
    },
    {
      question:
        "您舌苔厚腻或有舌苔厚厚的感觉吗？（如果自我感觉不清楚可由调查员观察后填写）",
      questionId: "thickGreasyTongueCoating",
    },
    {
      question: "您舌下静脉瘀紫或增粗吗？（可由调查员辅助观察后填写）",
      questionId: "sublingualVeinBruisingPurple",
    },
  ].map((v) => ({ ...v, score: INIT_SCORE }));

// 气虚质（2）（3）（4）（14）
// 阳虚质（11）（12）（13）（29）
// 阴虚质（10）（21）（26）（31）
// 痰湿质（9）（16）（28）（32）
// 湿热质（23）（25）（27）（30）
// 血瘀质（19）（22）（24）（33）
// 气郁质（5）（6）（7）（8）
// 特禀质（15）（17）（18）（20）
// 平和质（1）（2）（4）（5）（13）

export const getBodyTypeCols = () => [
  {
    label: "体质类型",
    prop: "tzlx",
  },
  {
    label: "气虚质",
    prop: "qiDeficiencyConstitution",
    relateQuestions: [2, 3, 4, 14],
  },
  {
    label: "阳虚质",
    prop: "yangDeficiencyConstitution",
    relateQuestions: [11, 12, 13, 29],
  },
  {
    label: "阴虚质",
    prop: "yinDeficiencyConstitution",
    relateQuestions: [10, 21, 26, 31],
  },
  {
    label: "痰湿质",
    prop: "phlegmDampnessConstitution",
    relateQuestions: [9, 16, 28, 32],
  },
  {
    label: "湿热质",
    prop: "dampHeatConstitution",
    relateQuestions: [23, 25, 27, 30],
  },
  {
    label: "血瘀质",
    prop: "bloodStasisSubstance",
    relateQuestions: [19, 22, 24, 33],
  },
  {
    label: "气郁质",
    prop: "qiStagnationConstitution",
    relateQuestions: [5, 6, 7, 8],
  },
  {
    label: "特禀质",
    prop: "specialQuality",
    relateQuestions: [15, 17, 18, 20],
  },
  {
    label: "平和质",
    prop: "peacefulQuality",
    relateQuestions: [1, 2, 4, 5, 13],
  },
];

/**
 * 获取体型类型表格数据
 * 此函数用于构造一个关于体型类型的数据对象，其中包括一个用于表格显示的数据数组
 * 它首先创建一个空的对象来存储体型类型数据，然后生成一个固定结构的数组用于表格渲染
 * 接着，它根据获取到的体型类型列配置，为每个体型类型属性初始化得分、选择状态和指导建议数组
 * 最后，返回包含这些数据的对象和用于渲染表格的数据数组
 *
 * @return {Object} 包含两个属性的对象：bodyTypeDataObj和bodyTypeTableDataRender
 */
export const getBodyTypeTableData = () => {
  // 初始化一个空对象，用于存储体型类型数据
  const bodyTypeDataObj = {};
  // 初始化一个长度为2的数组，用于表格渲染，初始值为带有tzlx和qixu属性的对象
  const bodyTypeTableDataRender = new Array(2).fill({ tzlx: "", qixu: "" });

  // 获取体型类型列配置，映射为属性名数组，过滤掉空或undefined的属性
  // 遍历每个属性名，为bodyTypeDataObj添加得分、选择状态和指导建议数组
  getBodyTypeCols()
    .map((v) => v.prop)
    .filter(Boolean)
    .forEach((prop) => {
      // 初始化属性的得分，属性名为prop，得分初始化为0
      bodyTypeDataObj[`${prop}Score`] = 0;
      // 初始化属性的选择状态，属性名为prop，状态初始化为'2'
      bodyTypeDataObj[`${prop}Choice`] = "-1";
      // 初始化属性的指导建议数组，属性名为prop，初始为空数组
      bodyTypeDataObj[`${prop}Guidance`] = [];
    });

  // 返回包含构造好的体型类型数据对象和用于渲染表格的数据数组
  return {
    bodyTypeDataObj,
    bodyTypeTableDataRender,
  };
};

export const healthGuidance = [
  "情志调摄",
  "饮食调养",
  "起居调摄",
  "运动保健",
  "穴位保健",
  "其它",
];
